Method and mechanism for context driven alteration of ui artifacts instances behavior using expression based pluggable ui aspects

ABSTRACT

A selection of a user interface artifact from a set of one or more user interface artifacts associated with a first user interface to an enterprise content management system is received. A selection of a user interface aspect from a set of one or more user interface aspects is received. Each user interface aspect in the set of user interface aspects is capable of modifying at least one user interface artifact from the set of user interface artifact. A second user interface to the enterprise content management system is generated using the selected user interface artifact and the selected user interface aspect where the selected user interface artifact in the second user interface is implemented per the selected user interface aspect.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of, and claims a benefit of priorityunder 35 U.S.C. 120 of, U.S. patent application Ser. No. 15/077,184filed Mar. 22, 2016, entitled “METHOD AND MECHANISM FOR CONTEXT DRIVENALTERATION OF UI ARTIFACTS INSTANCES BEHAVIOR USING EXPRESSION BASEDPLUGGABLE UI ASPECTS,” which are hereby incorporated herein for allpurposes.

BACKGROUND OF THE INVENTION

Enterprise content management systems, such as EMC Documentum, enableenterprise users (e.g., companies) to manage content according to theirbusiness processes and/or some content lifecycle. For example, suppose acompany uses EMC Documentum to create and manage some product over itslifecycle (e.g., from manufacturing or acquisition to distribution orsale). A user interface associated with the enterprise contentmanagement system may be created to ensure that the company's businessprocess are followed, for example to ensure that the proper peopleauthorize various steps, only authorized users have access to certain(e.g., sensitive or proprietary) information, etc.

To assist in the creation and management of user interfaces forenterprise content management systems, some enterprise contentmanagement vendors provide application composition tools. For example,EMC provides the xCP Designer application composer. It would bedesirable if application composition tools had new ways to generate userinterfaces, for example when it comes time to update an existing userinterface. Existing techniques may be risky and/or require a level ofexpertise that some users may not have.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a flowchart illustrating an embodiment of a process forgenerating a user interface to an enterprise content management system.

FIG. 2 is a diagram showing an embodiment of a system which includes anenterprise content management system.

FIG. 3 is a diagram illustrating an embodiment of a process fordetermine applicable user interface aspects for a particular userinterface artifact.

FIG. 4 is a diagram illustrating an embodiment of an initial userinterface and a modified user interface associated with creating anobject for a person in an enterprise content management system.

FIG. 5 is a diagram illustrating an embodiment of an initial userinterface and a modified user interface associated with searching forand modifying (if desired) purchase order information in an enterprisecontent management system.

FIG. 6 is a diagram illustrating an embodiment of an applicationcomposition tool in which aspects associated with a last name widget arepresented and one of the aspects is selected.

FIG. 7 is a diagram illustrating an embodiment of an applicationcomposition tool in which a dynamic label aspect has been applied to alast name widget.

FIG. 8 is a diagram illustrating an embodiment of an applicationcomposition tool with general properties displayed for a last namewidget.

FIG. 9 is a diagram illustrating an embodiment of an applicationcomposition tool with validation properties displayed for a last namewidget.

FIG. 10 is a diagram illustrating an embodiment of a dynamic labelaspect, including a configuration section.

FIG. 11 is a diagram illustrating an embodiment of a dynamic labelaspect, including a property sheet configuration section and anapplicable to section.

FIG. 12 is a diagram illustrating some embodiments of a user interfacewidget.

FIG. 13 is a diagram illustrating an embodiment of a user interface forassociating a user interface action with a widget and defining that userinterface action.

FIG. 14 shows an example of a user interface for defining a new userinterface event.

FIG. 15 shows an example of a user interface for publishing a userinterface event.

FIG. 16 shows an example of a user interface for subscribing to a userinterface event.

FIG. 17 is a diagram illustrating an embodiment of a context menu.

FIG. 18 is a diagram illustrating an embodiment of a user interface forcreating a page fragment.

FIG. 19 is a diagram illustrating an embodiment of a user interface forconfiguring an action flow.

FIG. 20 is a diagram illustrating an embodiment of a user interface forcreating an instance page for editing a person.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess; an apparatus; a system; a composition of matter; a computerprogram product embodied on a computer readable storage medium; and/or aprocessor, such as a processor configured to execute instructions storedon and/or provided by a memory coupled to the processor. In thisspecification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. Unless stated otherwise, a component such as aprocessor or a memory described as being configured to perform a taskmay be implemented as a general component that is temporarily configuredto perform the task at a given time or a specific component that ismanufactured to perform the task. As used herein, the term ‘processor’refers to one or more devices, circuits, and/or processing coresconfigured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

FIG. 1 is a flowchart illustrating an embodiment of a process forgenerating a user interface to an enterprise content management system.In some embodiments, the process of FIG. 1 is performed by anapplication composition tool (e.g., EMC xCP Designer) which generatesuser interfaces to an enterprise content management system (e.g., EMCDocumentum).

At 100, a selection of a user interface artifact from a set of one ormore user interface artifacts associated with a first user interface toan enterprise content management system is received. Conceptually, thefirst user interface (recited by step 100) may be thought of as aninitial or original user interface and the second user interface(recited by step 104) may be thought of as a modified user interface. Inone example of step 100, a user interface designer may select (e.g.,using an application composition tool) a user interface artifact (s)hewants modified.

As used herein, the term user interface artifact (or, more simply,artifact) refers to a smaller part or piece of a user interface whichdefines how the user interface behaves (e.g., in response to a user'sinput or interactions) and/or is rendered or otherwise displayed. To putit another way, a user interface is a collection of visual or displayelements which are displayed, as well as a collection of actions, step,or processes which are performed (e.g., when in a certain state or whencertain conditions have been met) and (generally speaking) a userinterface artifact is a smaller piece of the user interface whichdescribes some slice of how the user interface behaves or isrendered/displayed. User interface artifacts include (but are notlimited to): user interface widgets (e.g., a date input widget, a textinput widget, an actionable widget (e.g., a button), actions, userinterface events, context menus, page fragments, action flows, pages,and steps. More detailed examples of user interface artifacts aredescribed below.

At 102, a selection of a user interface aspect from a set of one or moreuser interface aspects is received, wherein each user interface aspectin the set of user interface aspects is capable of modifying at leastone user interface artifact from the set of user interface artifacts.For brevity, user interface aspects are sometimes referred to herein asaspects. As in the above step, a user interface designer may select(e.g., in an application composition tool) which user interface aspect(s)he wants to use to modify the selected user interface artifact.

In some embodiments, the selected user interface aspect may be as simpleas changing the text of a label (e.g., from English to some otherlanguage). Or, the selected user interface aspect may be associated witha more complicated change, such as changing a check or validationperformed on an input. Some more detailed examples of user interfaceaspects are described in more detail below.

At 104, a second user interface to the enterprise content managementsystem is generated using the selected user interface artifact and theselected user interface aspect, wherein the selected user interfaceartifact in the second user interface is implemented per the selecteduser interface aspect. For example, if the selected user interfaceaspect affects the placement of a particular widget, then the seconduser interface will have that widget placed per the selected userinterface aspect (e.g., as opposed to some original placement).

In some embodiments, the process of FIG. 1 receives information inaddition to the selection of the user interface artifact to be modifiedand the selection of the modifying user interface aspect. For example,if a label is being changed, then the new text that is to be displayedis received. Or, if some validation process (which is performed on someinput) is changed to a different validation process, then someidentification or specification of the new process is received. In someembodiments, an aspect is applied to (i.e., modifies) an artifact atruntime based on a conditional expression. For example, a dynamic labelaspect may be used to change a label if some condition is met. Such aconditional expression is another example of an input that is receivedin addition to the selected user interface artifact and the selecteduser interface aspect.

The following figure shows an example of a system in which the processof FIG. 1 is performed.

FIG. 2 is a diagram showing an embodiment of a system which includes anenterprise content management system. In the example shown, applicationcomposition tool 200 is used to create user interfaces to enterprisecontent management system (202). In this particular example, applicationcomposition tool 200 runs on some server (not shown) and is accessibleto user interface designers 216 and 220 and aspect developer 218 vianetwork 204.

Initially, enterprise content management system 202 is empty and thereis no user interface with which to access or otherwise manageinformation in enterprise content management system 202. Initial userinterface designer 216 accesses application composition tool 200 inorder to create an initial user interface to enterprise contentmanagement system 202. For simplicity and brevity, initial userinterface designer 216 is shown as a single person, but naturally anynumber of people may be involved in developing the initial userinterface.

Using application composition tool 200, initial user interface designer216 generates artifacts 208 and initial user interface 210 which arestored in user interface storage 206. Generally speaking, artifacts 208are the “building blocks” associated with initial user interface 210 andinitial user interface 210 is generated from artifacts 208 (e.g.,application composition tool 200 ingests artifacts 208 and outputsinitial user interface 210). It is noted that artifacts 208 are notnecessarily in a form that is capable of being executed or run, whereasinitial user interface 210 is in a form which is capable of beingexecuted or run. In one example, artifacts 208 are in XML and userinterface 210 is in JavaScript (e.g., JSON).

Aspect developer 200 uses application composition tool 200 to generateaspects 212. (As before, for simplicity and brevity, aspect developer218 is shown as a single person but any number of people may developaspects.) Generally speaking, an aspect describes a change which (ifdesired or otherwise selected) is used to change some artifact. In someembodiments, each aspect includes a list of relevant or applicableartifacts which that aspect is permitted to modify (if desired). Forexample, an aspect developer may specify whether an aspect affects(only) user interface widgets versus (only) actions versus (only) userinterface events, etc. In some embodiments, an artifact only affects acertain property or field associated with an artifact and that propertyor field is specified by the aspect developer. In some embodiments, anartifact requires some input and the aspect developer specifies suchinputs and any limitations or constraints on that input (ifappropriate).

Using the artifacts (208) created by initial user interface designer 216and the aspects (212) created by aspect developer 218, modified userinterface designer 220 picks which artifacts to modify and which aspectsto apply (i.e., changes to make) using application composition tool 200.The user interface which results from those selections is modified userinterface 214. As before, for simplicity and brevity, modified userinterface designer 220 is shown as a single person but any number ofpeople may develop aspects.

In one example of how the modified user interface 214 is generated, theapplication composition tool includes the selected aspect(s) in theapplicable artifact's JSON. In some cases there may be multiple aspectswhich have been selected and which apply to the same artifact. If so,modified user interface 214 (at least in this example) puts each aspectin a separate node. During runtime, the JSON of each artifact is checkedto see if any aspects modify that particular artifact. If so, the codefrom the aspect is used instead of the corresponding code from theartifact (e.g., code in the aspect which causes a new label to bedisplayed instead of corresponding label display code in the aspect). Insome embodiments, there is some conditional expression which isevaluated at runtime and (based on whether or not the conditionalexpression is satisfied), the appropriate code is executed. In someembodiments (e.g., when the code associated with the aspect will alwaysbe executed and the corresponding code associated with the artifact willnever be executed), the code associated with the aspect replaces orotherwise overwrites the corresponding code associated with theartifact.

A benefit to this technique is that a deep understanding of artifacts208 and/or initial user interface 210 is not required. For example, manycompanies which employ an enterprise content management system havecomplex business processes which are enforced by the user interface tothe enterprise content management system. Also, an enterprise contentmanagement system may have many types of data and/or data objects whichmay be related in a many different ways. As a result, directly modifyingartifacts 208 in order to make a change to a user interface may bedifficult and/or risky.

In contrast, with the system shown, neither aspect developer 218 normodified user interface designer 220 need to have a deep understandingof artifacts 208 and/or initial user interface 210 in order to generateand use aspects 212, respectively. Aspect developer 218 may be a userinterface or application expert (e.g., without necessarily having a deepunderstanding of the business process or rules enforced by initial userinterface 210) who has enough knowledge to avoid making changes to anyaction, user interface event, actions flow, and/or step which may causebusiness rules or business process associated with initial userinterface 210 to be violated. Similarly, modified user interfacedesigner 220 may know about new features, behaviors, or appearances formodified user interface 214 and can make these changes using aspects 212without being an expert coder and/or having a deep understanding of deepunderstanding of artifacts 208 and/or initial user interface 210.

As described above, another benefit to the technique described herein isthat aspects can be created and made available while still enforcingand/or respecting business processes and/or rules already in place ininitial user interface 210.

As described above, in some embodiments, each aspect includes a list ofartifacts which that aspect is applicable to (i.e., is permitted tomodify, if desired). The following figure shows an example of a processto determine applicable user interface aspects for a given userinterface artifact.

FIG. 3 is a diagram illustrating an embodiment of a process fordetermine applicable user interface aspects for a particular userinterface artifact. In some embodiments, the process is performedbetween steps 100 and 102 in FIG. 1. Application composition tool 200from FIG. 2 is an example of a system which may perform the process ofFIG. 3.

At 300, for each user interface aspect included in the set of userinterface aspects, a list of applicable user interface artifactsincluded in that user interface aspect is ingested. For example,application composition tool 200 would ingest aspects 212 in userinterface storage 206 and each aspect may have an “applicable to”section. In some embodiments, this step is performed when applicationcomposition tool 200 is compiled (or, more generally, is generated).

At 302, for the selected user interface artifact, one or more applicableuser interface aspects are determined, including by determining which ofthe one or more ingested lists of applicable user interface artifactsincludes the selected user interface artifact. In one example, step 302is triggered when step 100 in FIG. 1 is performed (e.g., because untilthat step, the process of FIG. 3 does not know what the selected userinterface artifact will be). In other words, step 302 examines theingested lists and determine which aspects/lists include the selecteduser interface artifact. Those aspects/lists which include the selecteduser interface artifact comprise the applicable user interface aspects.

At 304, the applicable user interface aspects is displayed as the set ofuser interface aspects from which the selected user interface aspect isselected. In some examples described below, an application compositiontool has some aspects window, page or tab in which the relevant aspectsfor the currently selected artifact are displayed. A user (e.g., themodified user interface designer 220 in FIG. 2) can then select whichaspects to apply to the currently selected artifact (if desired).Naturally, the display of applicable aspects changes if a differentartifact is selected.

The following figure shows some examples of initial user interfaces andmodified user interfaces which show how an initial user interface may bemodified by one or more aspects.

FIG. 4 is a diagram illustrating an embodiment of an initial userinterface and a modified user interface associated with creating anobject for a person in an enterprise content management system. In theexample shown, initial user interface 400 includes a number of textinput widgets (i.e., first name widget 402, last name widget 404,address widget 406, city widget 408, state widget 410, and ZIP codewidget 412) and an actionable widget (i.e., enter button 414). An enduser of initial user interface would enter the specified information intext input widgets 402-412 and then press enter button 414. In responseto enter button 414 being pushed, initial user interface 400 performs anumber of checks: (1) that a last name is provided in last name widget404, (2) that the state entered in state widget 410 matches one from alist of US states, and (3) that a 5-digit number is entered in ZIP codewidget.

Modified user interface 450 is an example of a modified user interfacewhich is generated using one or more selected artifacts and one or moreselected aspects. In this example, modified user interface 450 has beenmodified for use in India.

One change to modified user interface 450 is in the layout or placementof text input widgets. In initial user interface 400, first name widget402 is in the upper left corner and last name widget 404 is in the upperright corner. In modified user interface 450, their positions have beenreversed: family name widget 454 is in the upper left corner and firstname widget 452 is in the upper right corner. For example, there is maybe a “dynamic placement” aspect and a designer applied that aspect toartifacts associated with first name widget 402 and last name widget404. As part of the process, the designer may have had to specify thenew positions of the text input widgets.

Another change to modified user interface 450 is in the label displayedby family name widget 454. Instead of displaying “Last Name:” (whichwidget 404 in initial user interface 400 does), widget 454 displays“Family Name:” (e.g., because in India the term “family name” is morecommon than the term “last name”). As part of the process, the designermay have had to specify the new text (i.e., “Family Name:”).

Modified user interface 450 also differs from initial user interface 400in the checks (or, more generally, actions) that are performed whenenter button 464 is pressed. In initial user interface 400, an input isrequired for last name widget 404. However, in India, some people do nothave last/family names. As such, no input is required for family namewidget 454. For state widget 460, the input is compared a list of Indianstates (as opposed to a list of US states). For postal index numberwidget 462, modified user interface 450 checks for a 6-digit number (asopposed to a 5-digit number) since postal index numbers in India have 6digits. In some embodiments, a single “dynamic validation” aspect mayhave been used but with different artifacts (e.g., text input widgets)selected and different new checks specified for each selected artifact.

As is illustrated in this example, another benefit to the technique isthat there is no “code fork” required to simultaneously support multipleversions of a user interface. As is shown in this example, a company maywant to have one user interface for one country and another userinterface for another county. Both user interfaces would be in use atthe same time where the Indian version does not supersede or otherwisereplace the US version and vice versa. Since both versions come from thesame code base (i.e., the same set of artifacts), there is no code fork.

The following figure shows another example of a modified user interfaceand corresponding initial user interface.

FIG. 5 is a diagram illustrating an embodiment of an initial userinterface and a modified user interface associated with searching forand modifying (if desired) purchase order information in an enterprisecontent management system. In the example shown, initial user interface500 includes two tabs: search tab and create tab. With the search tabselected, a user can search for purchase orders using one or more of thefollowing search fields: a purchase order number, a vendor ID, or a partnumber. In the state shown, initial user interface 500 has returned thefollowing purchase order information in response to the search (notshown): a purchase order number of 2016-006-15, a vendor ID of 006, apart number of AB-888, a quantity of 10, and a total price of $150.00.

Initial user interface 550 also includes two buttons: search againbutton 502 and save changes button 504. If desired, the user can changeone or more of the search fields (e.g., the purchase order number, thevendor ID, and/or the part number) and perform another search bypressing search again button 502. If desired, the user can make changesto the purchase order information (e.g., the purchase order number, thevendor ID, the part number, the quantity, and/or the price) and save thechanged information to the enterprise content management system.

In this example, a change to the business process is desired whereanother person is required to validate and/or authorize any changes tothe purchase order. In contrast, any changes made using the save changesbutton in the initial user interface are committed immediately to theenterprise content management system, overwriting or otherwise replacingthe old values.

To implement this new feature, a number of aspects are used. First, adynamic label aspect is used to change the label of save changes button(504) from “Save Changes” to “Upload for Approval” in button 554.Second, an aspect which changes the size or dimensions of button 504 isused to adjust the size of button 554 so that it is taller than button504 (e.g., in order to clearly display the new, longer label). Third, anaspect which adjusts the position or placement of search again button552 within the page (fragment) is used so that the button is shifted up(e.g., to accommodate the taller button 554).

It is noted that the second and third aspects/steps outlined above areperformed if needed depending upon the implementation. For example, ifthe implementation of a button and/or the dynamic label aspect is suchthat the size or dimensions of the button being changed automaticallyexpands to accommodate the longer label, then it may not be necessary touse a change size aspect on button 552. Similarly, if the implementationof a button and/or the dynamic label aspect is such that the position ofa neighboring button is automatically shifted, then it may not benecessary to use a change position aspect to manually and/or directlyshift button 552 upwards.

Lastly, a change action aspect is used so that the action triggered bypressing button 554 no longer automatically saves the changed data to anenterprise content management system in a manner that overwrites the olddata. Rather, the data is (as an example) saved temporarily withoutoverwriting the old data. Some other user (e.g., with the appropriateauthority to permit changes to be made to purchase order information) isthen notified of the desired change to the purchase order informationand either accepts the change (in which case the new data replaces theold data in the enterprise content management system) or denies thechange (in which case the proposed change is discarded from theenterprise content management system).

The following figures show some examples of an application compositiontool via which an artifact and an aspect are selected (see, e.g., steps100 and 102 in FIG. 1).

FIG. 6 is a diagram illustrating an embodiment of an applicationcomposition tool in which aspects associated with a last name widget arepresented and one of the aspects is selected. In the example shown,application 600 is an application composition tool, in this case EMC xCPDesigner. In the state shown, a person_create page (602) associated withcreating a business object (e.g., in the enterprise content managementsystem) for a person is being edited. Page 602 includes a number of textinput widgets (e.g., first name widget, last name widget, and middlename widget), a date input widget (e.g., date of birth widget), and aBoolean input widget (e.g., is married widget).

Last name widget 604 is selected and as such, the properties displayedin properties panel 606 show the properties for last name widget 604.Last name widget 604 includes a number of properties, including general,style, behavior, validation, and aspects. In the state shown, aspectsare selected in properties panel 606 and the aspects assigned to thelast name widget (currently none) are shown under “Assigned Aspects.”

To add an aspect, a user clicks on add button 608 which causes selectaspect window 610 to be displayed. In this example, the user selects thedynamic label aspect from the pull down menu and presses the okaybutton. The process of FIG. 3 may be used to populate the aspects whichare displayed in window 610.

The following figure shows the application composition tool after thedynamic label aspect has been added or otherwise applied to the lastname widget.

FIG. 7 is a diagram illustrating an embodiment of an applicationcomposition tool in which a dynamic label aspect has been applied to alast name widget. Application composition tool 700 in FIG. 7 correspondsto application composition tool 600 from FIG. 6 after dynamic labelaspect has been applied to the last name widget.

As is shown in properties panel 702, the assigned aspects for the lastname widget (704) now includes the dynamic label aspect. Since dynamiclabel aspect 706 is selected (note, for example, the highlight overdynamic label aspect 706), aspects configuration panel 708 shows theconfigurations for dynamic label aspect 706. In this example, the nextlabel (i.e., new text) needs to be configured (i.e., the user needs tospecify what the new label for last name label 704 will be). Forexample, if the user wants to change the label of last name label 704from “Last Name:” to “Family Name:” then the user would specify “FamilyName:” in aspects configuration panel 708 and that new label would bedisplayed for that widget.

Returning to FIG. 6, it is noted that select aspect window 610 alsoincludes a dynamic CSS class aspect. In some cases, a user may wish tomodify the last name widget using both the dynamic label aspect and thedynamic CSS class aspect. If so, properties panel 702 in FIG. 7 wouldinclude both aspects and the configurations displayed by aspectsconfiguration panel 708 would correspond to whichever aspect is selectedin properties panel 702. For example, if the dynamic CSS class aspectwere selected in properties panel 702, then the aspects configurationpanel 708 would include a field for the user to specify the new CSSclass.

As described above, in some embodiments, an aspect includes aconditional expression. To illustrate this with the dynamic labelaspect, a user may specify in aspect configuration panel 708“IF<conditional expression>THEN<first label value>ELSE<second labelvalue>.” In some embodiments, the second label value in the ELSE branchabove is the original label for that widget.

The following figures show some other properties associated with theexemplary last name widget described above (see, e.g., the other tabs inproperty panel 702). Naturally, there may be a corresponding aspectwhich is capable of modifying one or more of the exemplary propertiesdescribed below.

FIG. 8 is a diagram illustrating an embodiment of an applicationcomposition tool with general properties displayed for a last namewidget. In the example shown, properties panel 800 shows the generalproperties of the last name widget and they include an ID, a label, atooltip, a prompt, and a value (e.g., where the value is stored in theenterprise content management system). As described above, there mayexist an aspect which (if desired) modifies any of the generalproperties shown here.

FIG. 9 is a diagram illustrating an embodiment of an applicationcomposition tool with validation properties displayed for a last namewidget. In the example shown, properties panel 900 shows the validationproperties for the last name widget (e.g., what check(s) is/areperformed on the data that is input into the last name widget and othervalidation related configurations or settings). This includes whetherthe validation is mandatory (e.g., a Boolean), whether to hide an errorin a tooltip, trigger event(s), validation expression(s), and validationmessage(s). As described above, there may exist an aspect which (ifdesired) modifies the validation for a selected artifact. For example,an aspect may modify whether validation is mandatory, whether an erroris hidden in a tooltip, the triggering event, the validation expression,and/or the validation message.

The following figures show the exemplary dynamic label aspect in moredetail.

FIG. 10 is a diagram illustrating an embodiment of a dynamic labelaspect, including a configuration section. In the example shown, xcpdynamic label.xml 1000 is displayed, including a configuration section(1002). Generally speaking, the configuration section helps anapplication composition tool (e.g., xCP Designer) display appropriateuser interface for the aspect in an aspects tab (e.g., with theapplication composition tool) and enable an end user to provide anyrequired inputs for the aspect execution in or at runtime.

FIG. 11 is a diagram illustrating an embodiment of a dynamic labelaspect, including a property sheet configuration section and anapplicable to section. FIG. 11 continues the example of FIG. 10 andshows parts of xcp dynamic label.xml which were not visible in FIG. 10.In this view, xcp dynamic label.xml is shown to include a property sheetconfiguration section (1102). Generally, speaking, the property sheetconfiguration allows an aspect developer to specify those user interfaceartifacts this aspect can be attached to. For example, dynamic labelaspect (shown here) is applicable to all user interface artifacts whichhave a label associated with it (see, e.g., line 6 in property sheetconfiguration section 1102).

This view also include an applicable to section (1104) which describesthose artifact types which the aspect is applicable to and is able tomodify if so desired. In this example, the applicable artifacts aredescribed by (e.g., logical) artifact type as opposed to specificartifact instances, such that an aspect is applicable to all instancesof an artifact when included in the applicable to list. As describedabove, limiting an aspect to specified artifacts may be desirable toprevent the accidental and/or unintentional violation of some businessprocess or rule enforced by a user interface.

The following figures describe various user interface artifacts in moredetail. Although not explicitly shown, it is to be understood that theremay be some aspect which is capable of modifying some part of theseexemplary artifacts.

User Interface Widgets

FIG. 12 is a diagram illustrating some embodiments of a user interfacewidget. A user interface widget is sometimes more simply referred to asa widget. Generally speaking, a widget is an element of a graphical userinterface which displays information in some arrangement or layout, suchas a column box or a text box, which is configurable by the user. Insome application composition tools (e.g., EMC xCP Designer), whenbuilding user interface pages, a user can add widgets from a widgetspalette onto a layout editor (not shown). This enables the user placethem anywhere on the page. The example shown includes a number ofwidgets, including: a date input widget (1200), a text input widget(1202), and an actionable widget (1204).

Actions

FIG. 13 is a diagram illustrating an embodiment of a user interface forassociating a user interface action with a widget and defining that userinterface action. (A user interface action is sometimes more simplyreferred to as an action.) Generally speaking, an action is a piece ofcode (e.g., faceless code) which gets executed whenever the userperforms some specific action. Actions may show up or otherwise beaccessible on a page as (for example) a button, link, or context menu.When such user interface elements are clicked, they execute some (as anexample) JavaScript. In the context of an enterprise content managementsystem, many user interface actions are used to perform some (business)process, such as: exporting to CSV, printing, adding to a favorite listor as a favorite, logging out, importing a document, exporting adocument, checking in a document, checking out a document, deleting adocument, completing a task, rejecting a task, or delegating a task.

In the example shown, an application composition tool (1300) shows avehicle list page being constructed. As is shown in interaction panel1302, the export to CSV action is currently associated with the vehiclelist page. To add another interaction to the vehicle list age, the userinterface designer may press add button 1304. In response, applicationcomposition tool 1300 may present a pull down window or other widget(not shown) from which to select an action to add to the vehicle listpage.

Properties panel 1308 shows some properties associated with the exportto CSV action and in the particular state shown shows inputs to theexport to CSV action. In this example, the inputs include a result listwidget ID (e.g., ‘vehicle_result_list’), a page size (e.g., 100), a filename (e.g., ‘Pleasanton_Branch_Vehicle_List’), and selected columns(e.g., {‘License Plate’, ‘Manufacturer Year’, ‘Vehicle Status’}). Othernon-input properties in this example include general, behavior, andvalidations.

User Interface Events

A user interface event is sometimes more simply referred to as an event.Generally speaking, an event is a mechanism which permits a declarativeway to express a trigger and/or enable communication between differentpage elements (e.g., widgets, actions, action flows, data servicesinstances, etc.) without requiring such elements to explicitly registerwith one another (i.e., be aware of each other).

In one example, a user interface contains two page fragments. One pagefragment includes a list of customers and the other page fragmentincludes details associated with the customers. When a user updates thedetails of a specific customer, a user interface event occurs andcommunicates to the first page fragment (with the list of customers),causing that page fragment to update the specifics of that customer toreflect the changes made on the second page fragment. If so configured,an event can trigger multiple events (e.g., based on the configurationsset by the user interface designer).

As described above, an event permits decoupling of the source and targetinformation. That means (e.g., irrespective of the source or destinationinformation) the event behaves seamlessly to pass information. An eventcan also provide an enhanced and interactive user experience where asingle event allows interaction between pages. For example, suppose auser interface has a customer accounts page. This page includes aresults list widget and an add new customer account button. The resultslist widget shows details related to customer accounts of interest(e.g., as the result of a search) and the add new customer accountbutton allows a user to add a new customer account. A user (if desired)could use a real-time query (RTQ) to get the details of the customeraccounts. Upon clicking the add new customer account button, the userinterface would connects the user to the action flow that seeksinformation through a wizard. For example, the first step seeksinformation for the type of account, second step seeks information forthe name of customer, and the last step is an agreement that thecustomer accepts to complete the creation of an account. This sequenceof steps permits creation of a new customer account. Regardless of thesource and target information, a user interface event named accountcreate is configured and this event gets triggered at the last step ofthe action flow. So, whenever a customer account is added, the userevent notifies the user about the addition of a new customer. This eventcan be used to get the latest list of customers every time a customer isadded by the user.

Some examples of user interface events include: object created, pagenavigated, document imported, user logged in, preferences updated,application started, action flow launched, and key pressed. Thefollowing figures show some examples of how events are created and/ormanaged.

FIG. 14 shows an example of a user interface for defining a new userinterface event. In the example shown, user interface 1400 shows thelabel (e.g., Application Started), system name (e.g., applicationstarted), and the file location (e.g.,C:\xCPDesigner\Applications\patent\patent\Artifacts\UIEvents\application_started.uievent) already defined. User interface 1400permits a user interface designer to define the event scope (e.g.,application, page, page fragment, or action flow), publication settings(e.g., make event publishable and/or publish user interface event acrossall open browser windows/tabs), whether it is a short-cut key event, and(if so) the short-cut key definition.

FIG. 15 shows an example of a user interface for publishing a userinterface event. In the example shown, user interface 1500 permits auser interface designer to specify a condition (e.g., currently true)and the corresponding event which is published if the condition is true(e.g., refresh page form).

FIG. 16 shows an example of a user interface for subscribing to a userinterface event. In the example shown, user interface 1600 permits auser interface designer to map the behavior for various events andincludes a behavior (e.g., set value to true), a behavior trigger (e.g.,application started), and/or a trigger condition.

Context Menus

FIG. 17 is a diagram illustrating an embodiment of a context menu.Generally speaking, a context menu is a menu in a user interface whichappears in response to some user interaction (e.g., right click amouse). Context menu 1700 shows one example of a context menu. In someembodiments, the menu which is displayed is context dependent (e.g.,depending upon the page, state, location of a pointer, or some othercontext, a different menu is displayed), hence the name of “contextmenu.”

Page Fragments

FIG. 18 is a diagram illustrating an embodiment of a user interface forcreating a page fragment. User interface 1800 shows an exemplary pagefragment being created. Generally speaking, a page fragment is acomponent that contains a collection of widgets or interactions which anapplication composer or designer can add to pages or other pagefragments. Creating page fragments eliminates the need to add the samewidget or widgets to multiple pages in a user interface. For example, ina loan processing application the following six text input widgets mayappear together on 12 different pages: customer first name, customerlast name, address, city, state, and ZIP code. If application composerdid not use a page fragment, the user interface designer would need toadd each of these text input widgets to each of the 12 pages. By using apage fragment, the user interface designer can define a collection oftext input widgets once, and then reuse the fragment on each page.

A page fragment is like a page in that an application composerassociates it to an application or to an object model. Unlike a page,however, a page fragment is not URL addressable and must be added to apage for the runtime application to render it. A page fragment is aself-contained entity that communicates with the host page or fragmentby way of input and output parameters.

Action Flows

Generally speaking, an action flow is a reusable sequence of steps thata user performs in a user interface. Some application composition toolscan define an action flow and reuse it in multiple contexts. At runtime,the action flow presents users with either a single step or multiplesteps to assist them in executing a (e.g., business) task or process.For example, an application composition tool can create an action flowthat enables users to add collateral to a customer. The applicationcomposition tool can reuse the same action flow in a car loan processingapplication and in a mortgage application. In various embodiments, anaction flow permits a user interface designer to: control the number ofsteps, sequence the flow of steps, define the final action executed atthe end of the flow, enable the finish button to be labeled, define thelabel for the cancel button, define the visibility of finish and/orcancel buttons, enable or disable the navigation to next and finish stepbased on the condition, and/or configure the expression to return steppages, first page, or next page.

FIG. 19 is a diagram illustrating an embodiment of a user interface forconfiguring an action flow. In the example shown, user interface 1900permits a user interface designer to configuring an action flow. Thisincludes step layout section 1902 where the height and width can bespecified and steps section 1904 where the various steps can be added.

Pages

Generally speaking, a page is the basic unit of a user interface. Pagesare created and composed at design time by putting widgets on it. It isthen viewed at runtime with those widgets.

Page types include master pages, applications pages, and instance pages.A master page is a top-most page in the page hierarchy. Typically, amaster page has a menus for application level operations, logos, aglobal search option, etc. A typical master page may also have adesignated area to display application or instance pages. An applicationpage is used to display information outside of the context of aninstance of any given object. They are typically used as the home pageof the application, search pages, list pages and administration pages.An instance page is used to create, display, and/or update data of theassociated object type, for example a customer or collateral.

FIG. 20 is a diagram illustrating an embodiment of a user interface forcreating an instance page for editing a person. In the example shown,the layout of the edit person (instance) page is shown and the userinterface designer can change the layout (i.e., placement) of widgetswithin the (instance) page.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

1. A method comprising: executing a content management system executingon a computer processor; generating, by the content management system, afirst user interface generated by the content management system anddisplayed to a user, wherein the first user interface includes aplurality of user interface artifacts which define how the first userinterface behaves or is displayed, and wherein the content managementsystem has a plurality of user interface aspects, each of which iscapable of modifying at least one of the plurality of user interfaceartifacts; receiving, by the content management system, a selection of aselected one of the user interface aspects and a selection of a selectedone of the user interface artifacts; and modifying, by the contentmanagement system, the first user interface by modifying or replacingcode of the selected user interface artifact according to the selecteduser interface aspect.
 2. The method of claim 1, further comprisingdisplaying to the user, by the content management system subsequent toreceiving the selection of the selected user interface artifact andprior to receiving the selection of the selected user interface aspect,a list of one or more of the user interface aspects which are applicableto the selected user interface artifact.
 3. The method of claim 2,further comprising ingesting, by the content management system, for eachuser interface aspect of the plurality of user interface aspects, acorresponding list of applicable user interface artifacts that aremodifiable by the user interface aspect.
 4. The method of claim 3,wherein for each user interface aspect of the plurality of userinterface aspects, the corresponding list of applicable user interfaceartifacts that are modifiable by the user interface aspect is containedin a section of the user interface aspect.
 5. The method of claim 3,further comprising determining, by the content management system, thelist of one or more of the user interface aspects which are applicableto the selected user interface artifact by examining the ingested listsof applicable user interface artifacts that are modifiable by the userinterface aspect and identifying ones of the one or more of the userinterface aspects that are applicable to the selected user interfaceartifact.
 6. The method of claim 1, wherein each user interface artifactof the plurality of user interface artifacts comprises correspondingJSON code, wherein the content management system is adapted to includethe selected user interface aspect in the JSON code of the selected userinterface artifact.
 7. The method of claim 1, further comprisingdetermining, by the content management system at runtime for each of theplurality of user interface artifacts, whether any of the user interfaceaspects has been selected to modify the user interface artifact, andexecuting code of the selected user interface aspect instead ofcorresponding code of the user interface artifact.
 8. A systemcomprising: a content management system executing on a computerprocessor; and a first user interface generated by the contentmanagement system and displayed to a user, wherein the first userinterface includes a plurality of user interface artifacts which definehow the first user interface behaves or is displayed; wherein thecontent management system has a plurality of user interface aspects,each of which is capable of modifying at least one of the plurality ofuser interface artifacts; wherein the content management system isadapted to receive a selection of a selected one of the user interfaceaspects and a selection of a selected one of the user interfaceartifacts; and wherein the content management system is adapted tomodify the first user interface by modifying or replacing code of theselected user interface artifact according to the selected userinterface aspect.
 9. The system of claim 8, wherein the contentmanagement system is adapted to display to the user, subsequent toreceiving the selection of the selected user interface artifact andprior to receiving the selection of the selected user interface aspect,a list of one or more of the user interface aspects which are applicableto the selected user interface artifact.
 10. The system of claim 9,wherein the content management system is adapted to ingest, for eachuser interface aspect of the plurality of user interface aspects, acorresponding list of applicable user interface artifacts that aremodifiable by the user interface aspect.
 11. The system of claim 10,wherein for each user interface aspect of the plurality of userinterface aspects, the corresponding list of applicable user interfaceartifacts that are modifiable by the user interface aspect is containedin a section of the user interface aspect.
 12. The system of claim 10,wherein the content management system is adapted to determine the listof one or more of the user interface aspects which are applicable to theselected user interface artifact by examining the ingested lists ofapplicable user interface artifacts that are modifiable by the userinterface aspect and identifying ones of the one or more of the userinterface aspects that are applicable to the selected user interfaceartifact.
 13. The system of claim 8, wherein each user interfaceartifact of the plurality of user interface artifacts comprisescorresponding JSON code, wherein the content management system isadapted to include the selected user interface aspect in the JSON codeof the selected user interface artifact.
 14. The system of claim 8,wherein the content management system is adapted to, for each of theplurality of user interface artifacts at runtime, determine whether anyof the user interface aspects has been selected to modify the userinterface artifact, and execute code of the selected user interfaceaspect instead of corresponding code of the user interface artifact. 15.A computer program product, the computer program product being embodiedin a non-transitory computer readable storage medium and comprisingcomputer instructions for: executing a content management systemexecuting on a computer processor; generating, by the content managementsystem, a first user interface generated by the content managementsystem and displayed to a user, wherein the first user interfaceincludes a plurality of user interface artifacts which define how thefirst user interface behaves or is displayed, and wherein the contentmanagement system has a plurality of user interface aspects, each ofwhich is capable of modifying at least one of the plurality of userinterface artifacts; receiving, by the content management system, aselection of a selected one of the user interface aspects and aselection of a selected one of the user interface artifacts; andmodifying, by the content management system, the first user interface bymodifying or replacing code of the selected user interface artifactaccording to the selected user interface aspect.
 16. The computerprogram product of claim 15, further comprising displaying to the user,by the content management system subsequent to receiving the selectionof the selected user interface artifact and prior to receiving theselection of the selected user interface aspect, a list of one or moreof the user interface aspects which are applicable to the selected userinterface artifact.
 17. The computer program product of claim 16,further comprising ingesting, by the content management system, for eachuser interface aspect of the plurality of user interface aspects, acorresponding list of applicable user interface artifacts that aremodifiable by the user interface aspect.
 18. The computer programproduct of claim 17, wherein for each user interface aspect of theplurality of user interface aspects, the corresponding list ofapplicable user interface artifacts that are modifiable by the userinterface aspect is contained in a section of the user interface aspect.19. The computer program product of claim 17, further comprisingdetermining, by the content management system, the list of one or moreof the user interface aspects which are applicable to the selected userinterface artifact by examining the ingested lists of applicable userinterface artifacts that are modifiable by the user interface aspect andidentifying ones of the one or more of the user interface aspects thatare applicable to the selected user interface artifact.
 20. The computerprogram product of claim 15, further comprising determining, by thecontent management system at runtime for each of the plurality of userinterface artifacts, whether any of the user interface aspects has beenselected to modify the user interface artifact, and executing code ofthe selected user interface aspect instead of corresponding code of theuser interface artifact.